<?php

// +----------------------------------------------------------------------
// | ThinkAdmin
// +----------------------------------------------------------------------
// | 版权所有 2014~2019 广州楚才信息科技有限公司 [ http://www.cuci.cc ]
// +----------------------------------------------------------------------
// | 官方网站: http://demo.thinkadmin.top
// +----------------------------------------------------------------------
// | 开源协议 ( https://mit-license.org )
// +----------------------------------------------------------------------
// | gitee 代码仓库：https://gitee.com/zoujingli/ThinkAdmin
// | github 代码仓库：https://github.com/zoujingli/ThinkAdmin
// +----------------------------------------------------------------------

namespace app\admin\controller\permission;

use app\admin\service\NodeService;
use library\Controller;
use think\Db;
use think\facade\Env;

/**
 * 部门管理
 * Class Department
 * @package app\admin\controller\permission
 */
class Department extends Controller
{
     /**
     * 指定数据表
     * @var string
     */
    protected $table = 'SystemDepartment';
	protected $dep_type_array = ['1'=>'市场','2'=>'客服','3'=>'社保','0'=>'其他'];
	
	
    /**
     * 部门管理
     * @auth true
     * @menu true
     * @throws \think\Exception
     * @throws \think\db\exception\DataNotFoundException
     * @throws \think\db\exception\ModelNotFoundException
     * @throws \think\exception\DbException
     * @throws \think\exception\PDOException
     */
    public function index()
    {
        $this->title = '部门管理';
//      $list = Db::name('system_order')->whereTime('create_at', '>=', '2024-04-17')->field('id,product_id,product_class')->select();
//      
//      foreach($list as $k=>$v){
//      	$product = Db::name('system_product')->where(['id'=>$v['product_id']])->field('id,name,product_class')->find();
//      	Db::name('system_order')->where(['id'=>$v['id']])->update(['product_class'=>$product['product_class']]);
//      }


//      Db::name('system_order')->where(['shop_id'=>[3,4,5,6]])->update(['is_deleted'=>1]);

		//修改逾期数据
//		set_time_limit(0);
//		$today = date('Y-m-d',time());
//		
//		$list = Db::name('system_order')->where([['is_deleted','eq',0],['delivery','eq',1],['overdue_status','eq',1]])->field('id,create_order_at,product_class')->select();
//		
//		foreach($list as $k=>$v){
//			$product_class = Db::name('system_product_class')->where(['id'=>$v['product_class']])->field('id,overdue_warning_day,overdue_day')->find();
//			if($product_class && $product_class['overdue_day']){
//				//逾期预警时间
//	            $overdue_warning_at = after_days($v['create_order_at'],$product_class['overdue_warning_day']);
//	            //逾期时间
//	            $overdue_at = after_days($v['create_order_at'],$product_class['overdue_day']);
//	            if(strtotime($today) < strtotime($overdue_warning_at)){
//          		$overdue_status = 1;
//          	}elseif((strtotime($today) >= strtotime($overdue_warning_at)) && (strtotime($today) < strtotime($overdue_at))){
//          		$overdue_status = 2;
//          	}elseif(strtotime($today) >= strtotime($overdue_at)){
//          		$overdue_status = 3;
//          	}
//				Db::name('system_order')->where(['id'=>$v['id']])->update(['overdue_status'=>$overdue_status,'overdue_warning_at'=>$overdue_warning_at,'overdue_at'=>$overdue_at]);
//			}
//		}
		
        $query = $this->_query($this->table)->like('dep_title');
        $query->order('sort desc,id desc')->page();
    }
    
    
    /**
     * 列表数据处理
     * @auth true
     * @param array $data
     * @throws \Exception
     */
    protected function _index_page_filter(&$data)
    {  	
        foreach ($data as &$vo) {
        	$vo['dep_type_cn'] = $this->dep_type_array[$vo['dep_type']];
        	$vo['user_number'] = Db::name('system_user')->where(['department_id'=>$vo['id'],'is_deleted'=>0])->count();
        }
    }

    /**
     * 添加部门
     * @auth true
     */
    public function add()
    {
        $this->_form($this->table, 'form');
    }

    /**
     * 编辑部门
     * @auth true
     */
    public function edit()
    {  	
        $this->_form($this->table, 'form');
    }

    /**
     * 表单数据处理
     * @param array $data
     * @auth true
     */
    protected function _form_filter(array $data)
    {
        if ($this->request->isPost()) {
            $where = [['dep_title', 'eq', $data['dep_title']]];
            if (!empty($data['id'])) $where[] = ['id ', 'neq', $data['id']];
            if (Db::name($this->table)->where($where)->count() > 0) {
                $this->error('部门已存在，请更改部门名称');
            }
        }else{
        	$this->type_op = ['1'=>'市场','2'=>'客服','3'=>'社保','0'=>'其他'];
        }
    }
    
    
    /**
     * 表单数据后置处理
     * @param number $id
     * @auth true
     */
    protected function _edit_form_result($id)
    {
		$info = Db::name($this->table)->where(['id'=>$id])->find();
		if($info){
			sysoplog('部门管理', '编辑'.$info['dep_title'].'部门成功');
		}
    }
    
    
    /**
     * 表单数据后置处理
     * @param number $id
     * @auth true
     */
    protected function _add_form_result($id)
    {
		$info = Db::name($this->table)->where(['id'=>$id])->find();
		if($info){
			sysoplog('部门管理', '添加'.$info['dep_title'].'部门成功');
		}
    }


    /**
     * 删除部门
     * @auth true
     */
    public function remove()
    {	
    	$info = Db::name('system_user')->where(['department_id'=> $this->request->post('id')])->count();
        if($info){
        	$this->error('部门下有员工，不能删除');
        }
        $this->_delete($this->table);
    }
    
    
    /**
	 * 删除结果处理
	 * @param boolean $result
	 * @throws \think\Exception
	 * @throws \think\exception\PDOException
	 */
	protected function _remove_delete_result($result)
	{
	    if ($result) {
	        $id = $this->request->post('id');
	        $info = Db::name($this->table)->where(['id'=>$id])->find();
	        sysoplog('部门管理', '删除'.$info['dep_title'].'部门成功');
	    } else {
	        $this->error("部门删除失败，请稍候再试！");
	    }
	}
    

}
